package cn.iocoder.yudao.module.dr.controller.admin.collectionmanagement.vo;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.excel.core.convert.DictExtConvert;
import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;

/**
 * 藏品 Excel 导入 VO
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
@ExcelIgnoreUnannotated // 忽略未标注 @ExcelProperty 的字段
public class CollectionImportExcelVO {

    @Schema(description = "藏品总登记号")
    @ExcelProperty({"藏品总登记号"})
    private String generalAccessionNumber;

    @Schema(description = "编号类型", example = "1")
    @ExcelProperty(value = {"*藏品编号", "*编号类型"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_NUMBER_TYPE)
    private String numberType;

    @Schema(description = "编号")
    @ExcelProperty({"*藏品编号", "*编号"})
    private String number;

    @Schema(description = "", example = "李四")
    @ExcelProperty({"*名称"})
    private String name;

    @Schema(description = "原名", example = "王五")
    @ExcelProperty({"*原名"})
    private String originalName;

    @Schema(description = "中国历史学年代")
    @ExcelProperty({"年代","中国历史学年代"})
    private String chineseHistoricalEra;

    @Schema(description = "考古学年代")
    @ExcelProperty({"年代","考古学年代"})
    private String archaeologicalEra;


    @Schema(description = "地质年代")
    @ExcelProperty({"年代","地质年代"})
    private String geologicalEra;

    @Schema(description = "年代")
    @ExcelProperty({"年代","年代"})
    private String era;

    @Schema(description = "具体年代")
    @ExcelProperty("具体年代")
    private String specificEra;

    @Schema(description = "文物类别")
    @ExcelProperty(value = {"*文物类别"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_CATEGORY)
    private String category;

    @Schema(description = "质地类别1")
    @ExcelProperty(value={"*质地","质地类别1"}, converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE)
    private String materialCategory1;

    @Schema(description = "质地类别2")
    @ExcelProperty(value={"*质地","质地类别2"}, converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE)
    private String materialCategory2;

    @Schema(description = "质地")
    @ExcelProperty(value={"*质地","质地"}, converter = DictExtConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_TEXTURE)
    private String material;

    @Schema(description = "实际数量")
    @ExcelProperty({"*数量","件数"})
    private Integer numberOfCases;

    @Schema(description = "实际数量")
    @ExcelProperty(value={"*数量","单位"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_NUM_UNIT)
    private Integer numberUnit;

    @Schema(description = "实际数量")
    @ExcelProperty({"*数量","实际数量"})
    private Integer actualQuantity;

    @Schema(description = "外形尺寸(cm)-通长")
    @ExcelProperty({"*外形尺寸(cm)","通长"})
    private String sizeLength;

    @Schema(description = "外形尺寸(cm)-通宽")
    @ExcelProperty({"*外形尺寸(cm)","通宽"})
    private String sizeWidth;

    @Schema(description = "外形尺寸(cm)-通高")
    @ExcelProperty({"*外形尺寸(cm)","通高"})
    private String sizeHeight;

    @Schema(description = "具体尺寸")
    @ExcelProperty({"具体尺寸"})
    private String specificSize;

    @Schema(description = "质量-质量范围")
    @ExcelProperty(value={"*质量","质量范围"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_QUALITY_RANGE)
    private String weightRange;

    @Schema(description = "质量-具体质量")
    @ExcelProperty({"*质量","具体质量"})
    private BigDecimal specificWeight;

    @Schema(description = "质量-单位")
    @ExcelProperty(value={"*质量","单位"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_QUALITY_UNIT)
    private String weightUnit;

    @Schema(description = "文物级别")
    @ExcelProperty(value={"文物级别"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_GRADE)
    private String relicLevel;

    @Schema(description = "文物来源")
    @ExcelProperty(value={"文物来源"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_SOURCE)
    private String relicSource;

    @Schema(description = "完残程度")
    @ExcelProperty(value={"完残程度"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_CONDITION_STATUS)
    private String completenessDegree;

    @Schema(description = "完残状况")
    @ExcelProperty({"完残状况"})
    private String completenessCondition;

    @Schema(description = "保存状态")
    @ExcelProperty(value={"保存状态"}, converter = DictConvert.class)
    @DictFormat(DictTypeConstants.COLLECTION_PRESERVATION_STATUS)
    private String preservationState;

    @Schema(description = "入藏时间范围")
    @ExcelProperty({"入藏时间范围"})
    private String collectionTimeRange;

    @Schema(description = "入藏年度")
    @ExcelProperty({"入藏年度"})
    private String collectionYear;

    @Schema(description = "藏品登记号")
    @ExcelProperty({"藏品登记号"})
    private String collectionRegistrationNumber;

    @Schema(description = "版本")
    @ExcelProperty({"版本"})
    private String version;

    @Schema(description = "存卷")
    @ExcelProperty({"存卷"})
    private String storageVolume;

    @Schema(description = "行政区划")
    @ExcelProperty({"行政区划"})
    private String administrativeDivision;

    @Schema(description = "单位编码")
    @ExcelProperty({"单位编码"})
    private String unitCode;

    @Schema(description = "单位名称", example = "王五")
    @ExcelProperty({"单位名称"})
    private String unitName;



    //扩展字段
    /**
     * 画心尺寸-长
     */
    @ExcelProperty({"画心尺寸","长"})
    private Double paintingLength;
    /**
     * 画心尺寸-宽
     */
    @ExcelProperty({"画心尺寸","宽"})
    private Double paintingWidth;
    /**
     * 画心尺寸-高
     */
    @ExcelProperty({"画心尺寸","高"})
    private Double paintingHeight;
    /**
     * 装裱尺寸-长
     */
    @ExcelProperty({"装裱尺寸","长"})
    private Double mountingLength;
    /**
     * 装裱尺寸-宽
     */
    @ExcelProperty({"装裱尺寸","宽"})
    private Double mountingWidth;
    /**
     * 装裱尺寸-高
     */
    @ExcelProperty({"装裱尺寸","高"})
    private String mountingHeight;
    /**
     * 内容题材
     */
    @ExcelProperty({"内容题材"})
    private String subjectMatter;
    /**
     * 技法风格
     */
    @ExcelProperty({"技法风格"})
    private String techniqueStyle;
    /**
     * 款识信息
     */
    @ExcelProperty({"款识信息"})
    private String inscriptionInfo;
    /**
     * 形状
     */
    @ExcelProperty({"形状"})
    private String shape;
    /**
     * 钮式
     */
    @ExcelProperty({"钮式"})
    private String knobStyle;
    /**
     * 印文内容
     */
    @ExcelProperty({"印文内容"})
    private String sealContent;
    /**
     * 文字类型
     */
    @ExcelProperty({"文字类型"})
    private String textType;
    /**
     * 印文排列
     */
    @ExcelProperty({"印文排列"})
    private String textArrangement;
    /**
     * 边框特征
     */
    @ExcelProperty({"边框特征"})
    private String borderFeature;
    /**
     * 印面尺寸
     */
    @ExcelProperty({"印面尺寸"})
    private String sealSize;

}
